package com.zone.domain.strategy.service;

import com.zone.domain.strategy.model.valobj.AwardStockSubTaskVO;

/**
 * @author: zongzi
 * @description: TODO
 * @date: 2024/9/23
 */
public interface IRaffleStock {

    /**
     * 扣减指定奖品扣减（渐减式扣减 100，99，98...）
     *
     * @param strategyId 策略id
     * @param awardId    奖品id
     */
    boolean descAwardStock(Long strategyId, Integer awardId);

    /**
     * 将奖品库存扣减任务加入到队列中
     *
     * @param subTask 奖品库存扣减任务
     */
    void offerAwardStockSubTask(AwardStockSubTaskVO subTask);

    /**
     * 拉取一条 奖品库存扣减任务，如果队列为空，则返回空
     *
     * @return 奖品库存扣减任务
     */
    AwardStockSubTaskVO pollAwardStockSubTask();
}
